#include <iostream>
using namespace std;

const double Pi = 3.1415926;

class CPoint
{
protected:
    double x, y;

public:
    CPoint(double a = 0, double b = 0)
    {
        x = a;
        y = b;
    }
    CPoint(const CPoint &p)
    {
        x = p.x;
        y = p.y;
    }
    virtual double GetArea() {}
    virtual double GetVolume() {}
    void print()
    {
        cout << "Center:(" << x << "," << y << ")" << endl;
    }
};

class Cirle : public CPoint
{
protected:
    double radius;

public:
    Cirle(double x, double y, double r) : CPoint(x, y)
    {
        radius = r;
    }
    Cirle(const Cirle &p)
    {
        radius = p.radius;
    }
    double GetArea()
    {
        return Pi * radius * radius;
    }
    virtual double GetVolume() {}
    void print()
    {
        cout << "radius=" << radius << endl;
    }
};

class Ccylinder : public Cirle
{
protected:
    double height;

public:
    Ccylinder(double x, double y, double r, double h) : Cirle(x, y, r)
    {
        height = h;
    }
    Ccylinder(const Ccylinder &p) : Cirle(p)
    {
        height = p.height;
    }
    double GetArea()
    {
        return 2 * Cirle::GetArea() + 2 * Pi * radius * height;
    }
    double GetVolume()
    {
        return Cirle::GetArea() * height;
    }
    void print()
    {
        cout << "height:" << height << endl
             << "BasalArea:" << Cirle::GetArea() << endl
             << "SupfaceArea:" << GetArea() << endl
             << "Volume:" << GetVolume() << endl;
    }
};

int main()
{
    double x, y, r, h;
    cin >> x >> y >> r >> h;
    CPoint p1(x, y);
    Cirle p2(x, y, r);
    Ccylinder p3(x, y, r, h);
    p1.print();
    p2.print();
    p3.print();

    return 0;
}